package util

import (
	"io/ioutil"
	"log"

	"gopkg.in/yaml.v2"
)

// 声明yaml文档对应的数据类型
type Data struct {
	Info []AlarmInfo `yaml:"data"`
}

// Data数组下的每个元素
type AlarmInfo struct {
	Date      string `yaml:"date"`
	Text      string `yaml:"text"`
	Count     int    `yaml:"count"`
	Space     int    `yaml:"space"`
	AlarmType string `yaml:"type"`
	// 记录循环播报的次数，用于每次结束播报时恢复count的次数
	LoopCount int `yaml:"loop_count"`
}

// 数据文件路径
var configPath = "conf/data.yaml"

// 文件读取函数
func Read() (Data, error) {
	var data Data
	File, err := ioutil.ReadFile(configPath)
	if err != nil {
		log.Printf("读取配置文件失败 #%v", err)
	}
	//
	err = yaml.Unmarshal(File, &data)
	if err != nil {
		log.Fatalf("解析失败: %v", err)
	}
	return data, err
}

// 写操作
func Write(data Data) error {
	result, err := yaml.Marshal(data)
	if err != nil {
		return err
	}
	err = ioutil.WriteFile(configPath, result, 0777)
	if err != nil {
		return err
	}
	return err
}
